package javax.realtime;

public interface Schedulable extends Runnable {

	public abstract boolean addIfFeasible();
	public abstract boolean addToFeasibility();
	//public abstract MemoryParameters getMemoryParameters();
	//public abstract ProcessingGroupParameters getProcessingGroupParameters();
	public abstract ReleaseParameters getReleaseParameters();
	public abstract Scheduler getScheduler();
	public abstract SchedulingParameters getSchedulingParameters();
	public abstract boolean removeFromFeasibility();
	//public abstract boolean setIfFeasible(ReleaseParameters release, MemoryParameters memory);
	//public abstract boolean setIfFeasible(ReleaseParameters release, MemoryParameters memory, ProcessingGroupParameters group);
	//public abstract boolean setIfFeasible(ReleaseParameters release, ProcessingGroupParameters group);
	//public abstract boolean setIfFeasible(SchedulingParameters scheduling, ReleaseParameters release, MemoryParameters memory);
	//public abstract boolean setIfFeasible(SchedulingParameters scheduling, ReleaseParameters release, MemoryParameters memory, ProcessingGroupParameters group);
	//public abstract void setMemoryParameters(MemoryParameters memory);
	//public abstract boolean setMemoryParametersIfFeasible(MemoryParameters memory);
	//public abstract void setProcessingGroupParameters(ProcessingGroupParameters group);
	//public abstract boolean setProcessingGroupParametersIfFeasible(ProcessingGroupParameters group);
	public abstract void setReleaseParameters(ReleaseParameters release);
	public abstract boolean setReleaseParametersIfFeasible(ReleaseParameters release);
	public abstract void setScheduler(Scheduler scheduler);
	//public abstract void setScheduler(Scheduler scheduler, SchedulingParameters scheduling, ReleaseParameters release, MemoryParameters memory, ProcessingGroupParameters group);
	public abstract void setSchedulingParameters(SchedulingParameters scheduling);
	public abstract boolean setSchedulingParametersIfFeasible(SchedulingParameters scheduling);
}
